﻿package string;

import java.util.Arrays;

public class 字符串中空格的替换 {

	public static void solutions(char[] chas) {
		if (chas == null || chas.length == 0)
			return;
		int num = 0; // 左侧的空格数
		int len = 0;// chas的原串的真实长度

		for (len = 0; len < chas.length && chas[len] != 0; len++) {
			if (chas[len] == ' ') {
				num++;
			}
		}

		// 数组的长度是len+2*num -1,因为len在for循环最后加了一次1
		int j = len + 2 * num - 1;
		for (int i = len - 1; i > 0; i--) {
			if (chas[i] != ' ') {
				// 如果是数字，则直接替换
				chas[j--] = chas[i];
			} else {
				// 如果是空格，则执行三个替换
				chas[j--] = '0';
				chas[j--] = '2';
				chas[j--] = '%';
			}
		}
	}

	public static void replaceWithStar(char[] chas) {
		if (chas == null ||chas.length == 0) {
			return;
		}
		int j = chas.length - 1;
		// 从右往左开始遍历
		for (int i = chas.length - 1; i >= 0; i--) {
			if (chas[i] != '*') {
				chas[j--] = chas[i];
			}
		}

		// 将左右的×复制
		for (; j > -1; ) {
			chas[j--] = '*';// 剩下的都是*，怒需要遍历
		}
	}

	public static void main(String[] args) {
		// TODO Auto-generated method stub
		char[] chas ="cbd**dsans**dsds".toCharArray();
		replaceWithStar(chas);
		Arrays.asList(chas).stream().forEach(System.out::print);
	}

}
